﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace FrbaCommerce.Editar_Publicacion
{
    public partial class Listado : Form
    {
        
        private int user_id;
        private int rolUsuarioLogueado;
        private int rolAdministrador = 1;

        public Listado(int user_id)
        {
            this.user_id = user_id;
            InitializeComponent();
            this.rolUsuarioLogueado = AccessData.adRol.obtenerRolusuario(user_id);
        }

        private void buttonBuscar_Click(object sender, EventArgs e)
        {
            buscar();
        }

        public void buscar()
        {
            dataGridView1.Columns.Clear();

            SqlConnection con = Program.obtenerConexion();

            SqlDataAdapter buscar = new SqlDataAdapter("SELECT pub_cod as Código, pub_descripcion as Descripción, pub_stock as Stock, pub_fecha_inicio as 'Fecha Inicio', pub_fecha_venc as 'Fecha Vencimiento', pub_precio as Precio, pub_tipo as 'Tipo', pub_preguntas as 'Permite Preguntas', vis_descripcion as Visibilidad, est_descripcion as Estado"
                + " FROM [Monkey_Coders].Publicaciones, [Monkey_Coders].Estados_publicaciones, [Monkey_Coders].Visibilidades"
                + " WHERE pub_cod like '%" + TextBoxNroPubl.Text + "%'"
                + " AND pub_descripcion like '%" + textBoxDesc.Text + "%'"
                + " AND pub_estado_id like '%" + ((Generar_Publicacion.GenerarPublicacion.Estado)comboBoxEstado.SelectedItem).id + "%' AND pub_estado_id = est_id"
                + " AND pub_visibilidad_cod = vis_cod"
                + " AND vis_cod = " + ((Generar_Publicacion.GenerarPublicacion.Visibilidad)comboBoxVisib.SelectedItem).id
                , con);

            //Hasta acá se muestran todas las publicaciónes.

            //Si el user no es el admin, las filtro para que solo vea las propias
            if (!(rolUsuarioLogueado == rolAdministrador))
                buscar.SelectCommand.CommandText = buscar.SelectCommand.CommandText + " AND pub_usuario_id = '" + user_id + "'";

            SqlCommandBuilder commandBuilder = new SqlCommandBuilder(buscar);
            DataSet ds = new DataSet();
            buscar.Fill(ds);
            dataGridView1.ReadOnly = true;
            dataGridView1.DataSource = ds.Tables[0];

            DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
            dataGridView1.Columns.Add(btn);
            btn.HeaderText = "Editar";
            btn.Name = "boton";
            btn.UseColumnTextForButtonValue = true;
        }


        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            DataGridViewRow fila = dataGridView1.Rows[e.RowIndex];

            if (e.ColumnIndex > 0)
            if (dataGridView1.Columns[e.ColumnIndex].Name == "boton")
            {
                Form editar = new Editar_Publicacion.FormEditarPubl(user_id, fila, this);
                editar.Show(); 
            }

        }


        private void TextBoxNroPubl_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);     
        }

        private void Listado_Load(object sender, EventArgs e)
        {
            Generar_Publicacion.GenerarPublicacion publicacion = new Generar_Publicacion.GenerarPublicacion(user_id);
            publicacion.CargarEstados(comboBoxEstado);
            publicacion.CargarVisibilidades(comboBoxVisib);
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void buttonLimpiar_Click(object sender, EventArgs e)
        {
            dataGridView1.Columns.Clear();
        }

    }
}
